//思路：
// 情况一：假设每种颜色的手套都存在
// 我们只需要拿到一边所有的手套，减去最少的那个颜色的手套个数再+1，
// 可能减去的是最少的那个，+1就能保证所有颜色的手套我们都有，如此我们在另外一遍随便拿一只即可
// 情况二：题目是存在某种颜色可能不存在的情况
// 当我们以左边全拿右边拿一只的方式来做时，当左边的一个颜色不存在时，将右边的该颜色的手套全部拿上。记为sum
// 存在的按照正常的拿，最后减去最小的再+1
// 左右手都按照这样去拿，最后比较谁小，取小再+sum+1就是最后的答案了


#include <vector>
#include <algorithm>
using namespace std;

class Gloves {
public:
    int findMinimum(int n, vector<int> left, vector<int> right) 
    {
        // write code here
        int leftSum = 0, leftMin = INT_MAX;
        int rightSum = 0, rightMin = INT_MAX;
        int sum = 0;
        for(int i = 0; i < n; i++)
        {
            if(left[i] == 0 || right[i] == 0) sum += left[i] + right[i];
            else
            {
                leftMin = min(leftMin, left[i]);
                rightMin = min(rightMin, right[i]);
                leftSum += left[i];
                rightSum += right[i];
            }
        }
        return sum += min(leftSum-leftMin+1, rightSum-rightMin+1) + 1;
    }
};